/**
 * Copyright (C) 2011 The Android Open Source Project 
 * Emial : guoyil199@163.com
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at 
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0 
 * 
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 * See the License for the specific language governing permissions and 
 * limitations under the License. 
 */ 
package com.lib;

import java.lang.ref.WeakReference;

import android.content.AsyncTaskLoader;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.widget.ImageView;


/**
 * @author Administrator
 * @Email guoyil199@163.com
 * @version V1.0
 * @Date 2015年11月30日 上午9:56:04
 * @Title <B>todo</B>
 * <pre>todo</pre>
 */
public class BitmapLoader extends AsyncTaskLoader<Bitmap> {
	private final String url;
	private final WeakReference<ImageView> imageViewReference;
	private final Drawable defDra;

	public static void load(ImageView iv, String url, Drawable defDrawable) {
		if (!TextUtils.isEmpty(url)) {
			new BitmapLoader(iv, url, defDrawable).forceLoad();
		}else{
			iv.setImageDrawable(defDrawable);
		}
	}

	private BitmapLoader(ImageView iv, String url, Drawable d) {
		super(iv.getContext());
		imageViewReference = new WeakReference<ImageView>(iv);
		this.url = url;
		this.defDra = d;
	}

	@Override
	public void deliverResult(Bitmap data) {
		ImageView iv = imageViewReference.get();
		if(iv!=null){
			if (data != null) {
				iv.setImageBitmap(data);
			}else{
				iv.setImageDrawable(defDra);
			}
		}
	}

	@Override
	public Bitmap loadInBackground() {
		return BitmapCache.getCache().getBitmap(url);
	}

}
